package com.zhuiyun.project.api.message.config;

import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * @ClassName DateConverter
 * @Description TODO
 * @Author kdj
 * @Date 2023/7/25 8:52
 **/
public class DateConverter {
    /**
     * @param date
     * @Author kdj
     * @Description 获取当前时间的格式
     * @Date 2023/7/25 8:52
     * @Return java.lang.String
     */
    public static String convertDateToString(Date date) {
        // 获取当前日期
        Date currentDate = new Date();

        // 创建 SimpleDateFormat 实例，用于格式化日期
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy年MM月dd日");

        // 获取 Calendar 实例
        Calendar inputCalendar = Calendar.getInstance();
        inputCalendar.setTime(date);

        Calendar currentCalendar = Calendar.getInstance();
        currentCalendar.setTime(currentDate);

        // 比较传入日期的年、月、日与当前日期的年、月、日是否相同
        boolean isToday = inputCalendar.get(Calendar.YEAR) == currentCalendar.get(Calendar.YEAR)
                && inputCalendar.get(Calendar.MONTH) == currentCalendar.get(Calendar.MONTH)
                && inputCalendar.get(Calendar.DAY_OF_MONTH) == currentCalendar.get(Calendar.DAY_OF_MONTH);

        // 如果传入日期是今天，则返回24小时制时间字符串
        if (isToday) {
            dateFormat.applyPattern("HH:mm");
            return dateFormat.format(date);
        }
        // 获取昨天的日期
        currentCalendar.add(Calendar.DAY_OF_MONTH, -1);
        int yesterdayYear = currentCalendar.get(Calendar.YEAR);
        int yesterdayMonth = currentCalendar.get(Calendar.MONTH);
        int yesterdayDay = currentCalendar.get(Calendar.DAY_OF_MONTH);
        // 如果传入日期是昨天，则返回"昨天"
        if (inputCalendar.get(Calendar.YEAR) == yesterdayYear
                && inputCalendar.get(Calendar.MONTH) == yesterdayMonth
                && inputCalendar.get(Calendar.DAY_OF_MONTH) == yesterdayDay) {
            return "昨天";
        }
        // 如果传入日期不是今年，则返回日期格式为：yyyy年MM月dd日
        else if (inputCalendar.get(Calendar.YEAR) != currentCalendar.get(Calendar.YEAR)) {
            return dateFormat.format(date);
        }
        // 否则返回日期格式为：MM月dd日
        else {
            dateFormat.applyPattern("MM月dd日");
            return dateFormat.format(date);
        }
    }


}
